﻿import type { ISysGroup, ISysPerson, ISysOrg } from '@/type/fileattachment'

export interface ISysDailySubstitutionRequestBill {
  ID?: string | null;
  PersonId: null;
  Person?: ISysPerson;
  StaffNo: string | null;
  Name: string | null;
  StartTime: Date | null;
  EndTime: Date | null;
  Reason: string | null;
  SubstitutePersonId: null;
  SubstitutePerson?: ISysPerson;
  SubstituteStaffNo: string | null;
  SubstituteName: string | null;
  Approver: string | null;
  ApprovalTime: Date | null;
  GroupId: null;
  Group?: ISysGroup;
  OrgId: null;
  Org?: ISysOrg;
  BillCode: string | null;
  BillStatus?: '草稿' | '正文' | null;
  WorkflowStatus?: '待提交' | '提交中' | '审核中' | '已完成' | '已取消' | '待处理' | '处理中' | '已处理' | null;
  Remark: string | null;
}

export interface ISysDailySubstitutionRequestBillVm {
  Entity: ISysDailySubstitutionRequestBill;
  ActionName?: string | null;
  IsMyApprove?: boolean | null;
  Remark?: string | null;
}

export interface ISysDailySubstitutionRequestBillView extends ISysDailySubstitutionRequestBill {

}

export interface ISysDailySubstitutionRequestBillQuery {
  PersonId?: string | null;
  StaffNo?: string | null;
  Name?: string | null;
  StartTime?: Date | null;
  EndTime?: Date | null;
  Reason?: string | null;
  SubstitutePersonId?: string | null;
  SubstituteStaffNo?: string | null;
  SubstituteName?: string | null;
  Approver?: string | null;
  ApprovalTime?: Date | null;
  GroupId?: string | null;
  OrgId?: string | null;
  BillCode?: string | null;
  BillStatus?: number | null;
  WorkflowStatus?: number | null;
  Remark?: string | null;
}

// 员工搜索请求参数接口
export interface ISysPersonSearchQuery {
  Name?: string;      // 员工姓名
  PageIndex?: number; // 页码
  State?: string;     // 员工状态
  StaffNo?: string;   // 员工工号
}

// 员工搜索响应接口
export interface ISysPersonSearchResponse {
  Code: number;
  Data: ISysPersonInfo[];
  Msg: string;
  Count?: number;
  PageCount?: number;
  Page?: number;
}

// 员工信息接口
export interface ISysPersonInfo {
  Age: number;
  ArchiveLocation: string;
  ArchiveNo: string;
  BirthDate: string;
  BonusAccount: string;
  BonusBank: string;
  ContractEndDate: string;
  ContractNo: string;
  ContractStartDate: string;
  Email: string;
  EmploymentType: string;
  Gender: string;
  GroupName: string;
  HighestEducation: string;
  Hobbies: string;
  HomeAddress: string;
  HouseholdRegistration: string;
  ID: string;
  IdCardNo: string;
  MaritalStatus: string;
  Name: string;
  NativePlace: string;
  Order: number;
  PartyBranch: string;
  Phone: string;
  ResignationReason: string;
  SalaryAccount: string;
  SalaryBank: string;
  StaffNo: string;
  State: string;
}